package com.flower.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.flower.pojo.ProductBill;
import com.flower.pojo.request_param.ProductBillListParam;

/**
 *  商品进货dao
 * @author 黄静娜
 * @date 2019年12月13日 下午9:16:57
 */
public interface ProductBillDao {
	/**
	 * 根据条件获取总记录数
	 * @author 黄静娜
	 * @date 2019年12月13日 下午9:17:50
	 * @param countPageStart
	 * @param pageTotal
	 * @param listParam
	 * @return
	 */
	int findProductBillByTitleOrnumberForPageCount(@Param("listParam")ProductBillListParam listParam);
	/**
	 * 根据条件获取分页数据
	 * @author 黄静娜
	 * @date 2019年12月13日 下午9:19:37
	 * @param countPageStart
	 * @param pageTotal
	 * @param listParam
	 * @return
	 */
	List<Map<String, Object>> findProductBillByTitleOrnumberForPageList(
			@Param("pageStart")int pageStart, 
			@Param("pageTotal")int pageTotal,
			@Param("listParam")ProductBillListParam listParam);
	@Insert("INSERT INTO tb_product_bill" + 
			" VALUES" + 
			"	(" + 
			"		#{productBill.id}," + 
			"		#{productBill.create_time}," + 
			"		#{productBill.update_time}," + 
			"		#{productBill.firm_name}," + 
			"		#{productBill.firm_address}," + 
			"		#{productBill.phone}," + 
			"		#{productBill.count}," + 
			"		#{productBill.title}," + 
			"		#{productBill.number}," + 
			"		#{productBill.price}" + 
			"	)")
	void insertProductBill(@Param("productBill")ProductBill productBill);
	/**
	 * 判断id是否存在
	 * @author 黄静娜
	 * @date 2019年12月14日 下午5:56:03
	 * @param productBillId
	 * @return
	 */
	@Select("SELECT" + 
			"	(CASE COUNT(*)" + 
			"		WHEN 0 THEN" + 
			"			0" + 
			"		ELSE" + 
			"			1" + 
			"	END) result" + 
			" FROM" + 
			"	tb_product_bill productBill" + 
			" WHERE" + 
			"	productBill.id = #{productBillId}")
	boolean isExistProductBillById(@Param("productBillId")String productBillId);
	/**
	 * 根据id修改数据
	 * @author 黄静娜
	 * @date 2019年12月14日 下午5:55:59
	 * @param bill
	 */
	@Update("UPDATE tb_product_bill productBill" + 
			" SET " + 
			"	productBill.update_time = #{productBill.update_time}," + 
			"	productBill.firm_name = #{productBill.firm_name}," + 
			"	productBill.firm_address = #{productBill.firm_address}," + 
			"	productBill.phone = #{productBill.phone}," + 
			"	productBill.title = #{productBill.title}," + 
			"	productBill.number = #{productBill.number}," + 
			"	productBill.price = #{productBill.price}," + 
			"	productBill.count = #{productBill.count}" + 
			" WHERE" + 
			"	productBill.id = #{productBill.id}")
	void updateProductBill(@Param("productBill")ProductBill productBill);
	/**
	 * 根据id获取需要的数据
	 * @author 黄静娜
	 * @date 2019年12月14日 下午6:09:03
	 * @param productBillId
	 * @return
	 */
	@Select("SELECT" + 
			"	productBill.id productBillId," + 
			"	productBill.title productBillName," + 
			"	productBill.count productBillCount," + 
			"	productBill.number productBillNumber," + 
			"	productBill.firm_name firmName," + 
			"	productBill.firm_address firmAddress," + 
			"	productBill.phone firmPhone," + 
			"	productBill.price productBillPrice" + 
			" FROM" + 
			"	tb_product_bill productBill" + 
			" WHERE" + 
			"	productBill.id = #{productBillId}")
	Map<String, Object> findProductBillById(@Param("productBillId")String productBillId);
	/**
	 * 根据id删除数据
	 * @author 黄静娜
	 * @date 2019年12月14日 下午6:16:27
	 * @param productBillId
	 */
	@Delete("DELETE FROM  tb_product_bill WHERE id = #{productBillId}")
	void deleteProductBillById(@Param("productBillId")String productBillId);

}
